HTTPリクエストをSOCKSプロキシサーバーへプロキシする方法をDockerで構築してみた
はじめに
データアナリティクス事業本部の藤川です。
のHTTPプロキシサーバをDockerで構築してみました。IPアクセス制限された環境に、HTTPプロキシ→SOCKSプロキシ経由でアクセスできるようになります。
余計なアプリケーションをインストールしたくない私としては、この記事を見て、コンテナ化したくなりました。 ローカル環境に他のアプリケーションをインストールする必要はありません。Dockerをインストールするだけです。 しかも、2ファイル用意するだけですし、1-2分でHTTPプロキシサーバが立ち上がります。
参考にしたのは次の記事です。
- Polipoを使用してHTTPリクエストをSOCKSプロキシサーバーへプロキシする方法を試してみる - AWS CLIでプロキシサーバを使う場合の注意 - (小ネタ)SOCKSプロキシとSSH踏み台サーバ経由でSSHする
前提環境
- Dockerがインストールされていること
準備
設定ファイルを作成
Docker用のファイルを2ファイル用意します。
Dockerfile
ファイル
FROM ubuntu:latest RUN apt update && apt install -y polipo COPY polipo.conf /tmp/polipo.conf EXPOSE 8080 ENTRYPOINT ["polipo", "-c", "/tmp/polipo.conf"]
polipo.conf
ファイルsocksParentProxy
パラメータにSOCKSプロキシサーバのIPアドレスを指定してください。
proxyAddress=0.0.0.0 proxyPort=8123 socksParentProxy="172.31.10.105:1080" socksProxyType=socks5
使用方法
Dockerコンテナを起動
1.Dockerイメージを作成します。
docker build -t http_socks_proxy/local .
2.Dockerコンテナを起動します。HTTPプロキシをlocalhost:8080
でホストしています。
docker run --rm -d --name http_socks_proxy -p 8080:8123 http_socks_proxy/local
AWS CLIを試す
1.ローカル環境で環境変数を設定します。
- Linux または macOS
export HTTP_PROXY=localhost:8080 export HTTPS_PROXY=localhost:8080
- Windows
setx HTTP_PROXY=localhost:8080 setx HTTPS_PROXY=localhost:8080
2.AWS CLIコマンドを実行します。
aws ec2 describe-regions --region ap-northeast-1 | head -5
Dockerコンテナを停止(コンテナ削除)
1.使い終わったらDockerコンテナを停止します。--rm
オプション付きで起動していますので、停止するとコンテナは削除されます。
docker stop http_socks_proxy
さいごに
非常に簡単です。Dockerにすると、ローカル環境を汚さないので助かります。